package leetcode;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import utils.StringUnicodeUtil;

/**
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。 如果输入字符串包含 unicode
 * 字符怎么办？你能否调整你的解法来应对这种情况？
 * 
 * @author maodou38
 *
 */
public class Solution242_mime {

	public static boolean isAnagram(String s, String t) {
		// 先处理unicode
		String str1 = StringUnicodeUtil.unicodeStr2String(s);
		String str2 = StringUnicodeUtil.unicodeStr2String(t);
		String[] split1 = str1.split("");
		String[] split2 = str2.split("");
		Map<String, Integer> countMap = new HashMap<String, Integer>();
		for (int i = 0; i < split1.length; i++) {
			countMap.put(split1[i], countMap.get(split1[i]) == null ? 1 : countMap.get(split1[i]) + 1);
		}
		for (int i = 0; i < split2.length; i++) {
			if (!countMap.containsKey(split2[i]))
				return false;
			countMap.put(split2[i], countMap.get(split2[i]) - 1);
		}
		Collection<Integer> values = countMap.values();
		Iterator<Integer> iterator = values.iterator();
		while (iterator.hasNext()) {
			if (iterator.next().intValue() != 0)
				return false;
		}
		return true;
	}

	public static void main(String[] args) {
		System.out.println(isAnagram("an中agram", "naga中ram"));
	}
}
